package a18_SimplePracticeAll;

import java.util.Scanner;

/**
 * @Author quan
 * @Description 解密数字
 * @Date 2023/2/2 22:46
 */
/*关键在于加密的时候将数字%10,怎么反过来呢？
输入数字是0-9之间，加5后数字范围是5-14，这个范围内对10取余数：
在56789时取余是自身，10-14取余则是(0-4)，因此0-4的数字再加个10就能得到原数，5-9的则不用改变*/
public class A51_DecryptNumber {
    public static void main(String[] args) {
        //加密数字
        //获取一个数字
        int number = readKeyBoard();
        //获取它的每一位，存储到数组中
        int[] eachBitArr = getEachBit(number);
        //遍历数组，对每一位+5  %10
        int[] operateArr = operateArray(eachBitArr);
        //首尾交换数组内容
        int[] reverseArray = reverseArray(operateArr);
        //遍历数组，打印结果
        loopArray(reverseArray);

    }

    //遍历数组，打印结果
    public static void loopArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    //反转数组的内容：首尾交换
    public static int[] reverseArray(int[] arr){
        for (int i = 0; i < arr.length/2; i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length-i-1];
            arr[arr.length-i-1] = temp;
        }
        return arr;
    }

    //对数组内容进行操作
    public static int[] operateArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i]-5;
            if(arr[i]>=0 && arr[i]<=4){
            }else {
                arr[i] = arr[i]+10;
            }
        }
        return arr;
    }
    //获取每一位的方法
    public static int[] getEachBit(int num){
        //求一个整数的长度：
        // 解法1：将整数转为字符串，求字符串的长度
        int numLength = (num+"").length();
        //定义一个存储数字的每一位的数组
        int[] arr = new int[numLength];
        int eachBitNum;
        //解法1：将获取的每一位存储到数组中(自己写的for循环)
        for (int i = numLength-1; i >=0; i--) {
            if (num!=0){
                eachBitNum = num % 10;
                num = num/10;
                //将获取的数字存入数组中
                arr[i] = eachBitNum;
            }
        }
        return arr;
    }

    public static int readKeyBoard(){
        Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }
}

